In the not-too-distant past, video media, such as television and movies, were stored and transferred in analog format. With the advent of the digital age, however, video media are stored and transferred most often in digital format. Video media in a digital format often uses significant resources to store and transfer. Because of this, digital video media is often compressed to reduce storage and transfer resources and then decompressed prior to use.
Some video encoders compress digital video media in part using motion-estimation processes. These motion-estimation processes may reduce computing resources used in storing and transferring media by relating part of a future image to part of a previous image, such as part of a future frame of a movie to part of a prior frame of the movie. The encoders store and transfer less of the future image by using parts of the prior image and some relationship indicating where in the future image the parts of the prior image should be displayed.
In some cases this relationship between a future and previous image is expressed as a motion vector. A motion vector is a two-dimensional vector that provides an offset from coordinates of the future image to coordinates of the prior image. For some video-compression standards, motion vectors are conventionally determined down to subpixel accuracy. Motion vectors having subpixel accuracy permit excellent compression ratios, which reduces the storage and transfer resources used. Conventional techniques for encoding based on determining motion vectors with subpixel accuracy, however, are often slow because of their computational complexity.